﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Mundialeitor.App_Util;
using Entidades;
using Negocio;

namespace Mundialeitor
{
    public partial class TablaPosiciones : PaginaBase
    {
        static List<int> posiciones;
        private UsuarioEntity usuario;
        public UsuarioEntity Usuario
        {
            get { return usuario; }
            set { usuario = value; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Usuario = (UsuarioEntity)Session["usuario"];

                if (Usuario != null)
                {
                    if (!IsPostBack)
                    {
                        CargarComboEtapa();
                    }
                }
                else
                {
                    Server.Transfer(PagesConstants.Login);
                }
            }
            catch (Exception ex)
            {
                MostrarMensaje(ex);
            }
        }

        private void CargarComboEtapa()
        {
            //Utilidades.CargarComboDesdeEnumeracion(ddlEtapa, typeof(Entidades.EnumEtapas), String.Empty);
            Utilidades.CargarCombo(ddlEtapa, new EtapaRules().SeleccionarTodas(), "Nombre", "Id", "Seleccione");
        }

        private void CargarTablaPosiciones(int idEtapa)
        {
            var regla = new TablaPosicionesRules();
            var tablaPosiciones = regla.SeleccionarTablaPosicionesBoletaPorFiltro(null, idEtapa, null);

            if (tablaPosiciones != null && tablaPosiciones.Count==1)
            {
                tablaPosiciones[0].Detalle.Sort(new Entidades.Utils.ComparadorDetalleTablaPosiciones());
                CargarGrilla(tablaPosiciones[0].Detalle);    
            }
            else
            {
                CargarGrilla(null);
            }            
        }

        private void CargarGrilla(List<DetalleTablaPosicionesEntity> lista)
        {
            posiciones = new List<int>();
            posiciones.Add(1);
            for (int i = 1; i < lista.Count; i++)
            {
                if (lista[i].Puntaje == lista[i - 1].Puntaje)
                    posiciones.Add(posiciones[posiciones.Count - 1]);
                else
                    posiciones.Add(posiciones[posiciones.Count - 1] + 1);
            }
            Utilidades.CargarGrilla(gvGrilla, lista);
        }

        protected void ddlEtapa_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(ddlEtapa.SelectedValue))                
                    CargarTablaPosiciones(int.Parse(ddlEtapa.SelectedValue));
            }
            catch (Exception ex)
            {
                MostrarMensaje(ex);
            }
        }

        protected void gvGrilla_RowCreated(object sender, GridViewRowEventArgs e)
        {
            try
            {
                // Asociación de CommandArgument de cada fila con el id de la entidad
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    Label lbl;                    
                    lbl= (Label)e.Row.FindControl("lblPosicion");
                    lbl.Text =  posiciones[e.Row.RowIndex].ToString();
                }
            }
            catch (Exception ex)
            {
                MostrarMensaje(ex.Message);
            }
        }

        protected void gvGrilla_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                gvGrilla.PageIndex = e.NewPageIndex;
                gvGrilla.DataSource = (List<PartidoEntity>)Session["partidosGrilla"];
                gvGrilla.DataBind();
            }
            catch (Exception ex)
            {
                MostrarMensaje(ex.Message);
            }
        }
    }
}
